package com.lyc.utils;

import java.security.SecureRandom;
import java.util.UUID;

/**
 * @Author: lyc
 * @Date: 2024/11/12 上午9:59
 */
public class StringUtil {

    /**
     * 随机生成字符串，可指定字符串的长度
     * @param length 字符串长度 可填1-32
     * @return
     */
    public static String randomlyGenerateString(int length) {
        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, length);
    }

    /**
     * 随机生成8位长度的字符串
     * @return
     */
    public static String randomlyGenerateString() {
        return randomlyGenerateString(8);
    }

    /**
     * 生成指定长度的随机字符串。
     *
     * @param length 要生成的随机字符串的长度
     * @return 生成的随机字符串
     */
    public static String generateRandomString(int length) {
        // 定义可选字符集，包括大写字母、小写字母和数字
        String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789";

        // 使用 SecureRandom 来生成安全的随机数
        SecureRandom random = new SecureRandom();

        // 创建一个 StringBuilder 来构建最终的随机字符串
        StringBuilder sb = new StringBuilder(length);

        // 循环生成每个字符
        for (int i = 0; i < length; i++) {
            // 从字符集中随机选择一个字符
            int index = random.nextInt(chars.length());
            sb.append(chars.charAt(index));
        }

        // 返回生成的随机字符串
        return sb.toString();
    }
}
